home *** CD-ROM | disk | FTP | other *** search
/ Best Tools for JAVA / Best Tools for JAVA.iso / STANDARD / RFC / RFC1738.TXT < prev    next >
Encoding:
Text File  |  1995-11-09  |  52.9 KB  |  1,405 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13. Network Working Group                                     T. Berners-Lee
  14.  
  15. Request for Comments: 1738                                          CERN
  16.  
  17. Category: Standards Track                                    L. Masinter
  18.  
  19.                                                        Xerox Corporation
  20.  
  21.                                                              M. McCahill
  22.  
  23.                                                  University of Minnesota
  24.  
  25.                                                                  Editors
  26.  
  27.                                                            December 1994
  28.  
  29.  
  30.  
  31.  
  32.  
  33.                     Uniform Resource Locators (URL)
  34.  
  35.  
  36.  
  37. Status of this Memo
  38.  
  39.  
  40.  
  41.    This document specifies an Internet standards track protocol for the
  42.  
  43.    Internet community, and requests discussion and suggestions for
  44.  
  45.    improvements.  Please refer to the current edition of the "Internet
  46.  
  47.    Official Protocol Standards" (STD 1) for the standardization state
  48.  
  49.    and status of this protocol.  Distribution of this memo is unlimited.
  50.  
  51.  
  52.  
  53. Abstract
  54.  
  55.  
  56.  
  57.    This document specifies a Uniform Resource Locator (URL), the syntax
  58.  
  59.    and semantics of formalized information for location and access of
  60.  
  61.    resources via the Internet.
  62.  
  63.  
  64.  
  65. 1. Introduction
  66.  
  67.  
  68.  
  69.    This document describes the syntax and semantics for a compact string
  70.  
  71.    representation for a resource available via the Internet.  These
  72.  
  73.    strings are called "Uniform Resource Locators" (URLs).
  74.  
  75.  
  76.  
  77.    The specification is derived from concepts introduced by the World-
  78.  
  79.    Wide Web global information initiative, whose use of such objects
  80.  
  81.    dates from 1990 and is described in "Universal Resource Identifiers
  82.  
  83.    in WWW", RFC 1630. The specification of URLs is designed to meet the
  84.  
  85.    requirements laid out in "Functional Requirements for Internet
  86.  
  87.    Resource Locators" [12].
  88.  
  89.  
  90.  
  91.    This document was written by the URI working group of the Internet
  92.  
  93.    Engineering Task Force.  Comments may be addressed to the editors, or
  94.  
  95.    to the URI-WG <uri@bunyip.com>. Discussions of the group are archived
  96.  
  97.    at <URL:http://www.acl.lanl.gov/URI/archive/uri-archive.index.html>
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115. Berners-Lee, Masinter & McCahill                                [Page 1]
  116.  
  117.  
  118.  
  119. RFC 1738            Uniform Resource Locators (URL)        December 1994
  120.  
  121.  
  122.  
  123.  
  124.  
  125. 2. General URL Syntax
  126.  
  127.  
  128.  
  129.    Just as there are many different methods of access to resources,
  130.  
  131.    there are several schemes for describing the location of such
  132.  
  133.    resources.
  134.  
  135.  
  136.  
  137.    The generic syntax for URLs provides a framework for new schemes to
  138.  
  139.    be established using protocols other than those defined in this
  140.  
  141.    document.
  142.  
  143.  
  144.  
  145.    URLs are used to `locate' resources, by providing an abstract
  146.  
  147.    identification of the resource location.  Having located a resource,
  148.  
  149.    a system may perform a variety of operations on the resource, as
  150.  
  151.    might be characterized by such words as `access', `update',
  152.  
  153.    `replace', `find attributes'. In general, only the `access' method
  154.  
  155.    needs to be specified for any URL scheme.
  156.  
  157.  
  158.  
  159. 2.1. The main parts of URLs
  160.  
  161.  
  162.  
  163.    A full BNF description of the URL syntax is given in Section 5.
  164.  
  165.  
  166.  
  167.    In general, URLs are written as follows:
  168.  
  169.  
  170.  
  171.        <scheme>:<scheme-specific-part>
  172.  
  173.  
  174.  
  175.    A URL contains the name of the scheme being used (<scheme>) followed
  176.  
  177.    by a colon and then a string (the <scheme-specific-part>) whose
  178.  
  179.    interpretation depends on the scheme.
  180.  
  181.  
  182.  
  183.    Scheme names consist of a sequence of characters. The lower case
  184.  
  185.    letters "a"--"z", digits, and the characters plus ("+"), period
  186.  
  187.    ("."), and hyphen ("-") are allowed. For resiliency, programs
  188.  
  189.    interpreting URLs should treat upper case letters as equivalent to
  190.  
  191.    lower case in scheme names (e.g., allow "HTTP" as well as "http").
  192.  
  193.  
  194.  
  195. 2.2. URL Character Encoding Issues
  196.  
  197.  
  198.  
  199.    URLs are sequences of characters, i.e., letters, digits, and special
  200.  
  201.    characters. A URLs may be represented in a variety of ways: e.g., ink
  202.  
  203.    on paper, or a sequence of octets in a coded character set. The
  204.  
  205.    interpretation of a URL depends only on the identity of the
  206.  
  207.    characters used.
  208.  
  209.  
  210.  
  211.    In most URL schemes, the sequences of characters in different parts
  212.  
  213.    of a URL are used to represent sequences of octets used in Internet
  214.  
  215.    protocols. For example, in the ftp scheme, the host name, directory
  216.  
  217.    name and file names are such sequences of octets, represented by
  218.  
  219.    parts of the URL.  Within those parts, an octet may be represented by
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227. Berners-Lee, Masinter & McCahill                                [Page 2]
  228.  
  229.  
  230.  
  231. RFC 1738            Uniform Resource Locators (URL)        December 1994
  232.  
  233.  
  234.  
  235.  
  236.  
  237.    the chararacter which has that octet as its code within the US-ASCII
  238.  
  239.    [20] coded character set.
  240.  
  241.  
  242.  
  243.    In addition, octets may be encoded by a character triplet consisting
  244.  
  245.    of the character "%" followed by the two hexadecimal digits (from
  246.  
  247.    "0123456789ABCDEF") which forming the hexadecimal value of the octet.
  248.  
  249.    (The characters "abcdef" may also be used in hexadecimal encodings.)
  250.  
  251.  
  252.  
  253.    Octets must be encoded if they have no corresponding graphic
  254.  
  255.    character within the US-ASCII coded character set, if the use of the
  256.  
  257.    corresponding character is unsafe, or if the corresponding character
  258.  
  259.    is reserved for some other interpretation within the particular URL
  260.  
  261.    scheme.
  262.  
  263.  
  264.  
  265.    No corresponding graphic US-ASCII:
  266.  
  267.  
  268.  
  269.    URLs are written only with the graphic printable characters of the
  270.  
  271.    US-ASCII coded character set. The octets 80-FF hexadecimal are not
  272.  
  273.    used in US-ASCII, and the octets 00-1F and 7F hexadecimal represent
  274.  
  275.    control characters; these must be encoded.
  276.  
  277.  
  278.  
  279.    Unsafe:
  280.  
  281.  
  282.  
  283.    Characters can be unsafe for a number of reasons.  The space
  284.  
  285.    character is unsafe because significant spaces may disappear and
  286.  
  287.    insignificant spaces may be introduced when URLs are transcribed or
  288.  
  289.    typeset or subjected to the treatment of word-processing programs.
  290.  
  291.    The characters "<" and ">" are unsafe because they are used as the
  292.  
  293.    delimiters around URLs in free text; the quote mark (""") is used to
  294.  
  295.    delimit URLs in some systems.  The character "#" is unsafe and should
  296.  
  297.    always be encoded because it is used in World Wide Web and in other
  298.  
  299.    systems to delimit a URL from a fragment/anchor identifier that might
  300.  
  301.    follow it.  The character "%" is unsafe because it is used for
  302.  
  303.    encodings of other characters.  Other characters are unsafe because
  304.  
  305.    gateways and other transport agents are known to sometimes modify
  306.  
  307.    such characters. These characters are "{", "}", "|", "\", "^", "~",
  308.  
  309.    "[", "]", and "`".
  310.  
  311.  
  312.  
  313.    All unsafe characters must always be encoded within a URL. For
  314.  
  315.    example, the character "#" must be encoded within URLs even in
  316.  
  317.    systems that do not normally deal with fragment or anchor
  318.  
  319.    identifiers, so that if the URL is copied into another system that
  320.  
  321.    does use them, it will not be necessary to change the URL encoding.
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339. Berners-Lee, Masinter & McCahill                                [Page 3]
  340.  
  341.  
  342.  
  343. RFC 1738            Uniform Resource Locators (URL)        December 1994
  344.  
  345.  
  346.  
  347.  
  348.  
  349.    Reserved:
  350.  
  351.  
  352.  
  353.    Many URL schemes reserve certain characters for a special meaning:
  354.  
  355.    their appearance in the scheme-specific part of the URL has a
  356.  
  357.    designated semantics. If the character corresponding to an octet is
  358.  
  359.    reserved in a scheme, the octet must be encoded.  The characters ";",
  360.  
  361.    "/", "?", ":", "@", "=" and "&" are the characters which may be
  362.  
  363.    reserved for special meaning within a scheme. No other characters may
  364.  
  365.    be reserved within a scheme.
  366.  
  367.  
  368.  
  369.    Usually a URL has the same interpretation when an octet is
  370.  
  371.    represented by a character and when it encoded. However, this is not
  372.  
  373.    true for reserved characters: encoding a character reserved for a
  374.  
  375.    particular scheme may change the semantics of a URL.
  376.  
  377.  
  378.  
  379.    Thus, only alphanumerics, the special characters "$-_.+!*'(),", and
  380.  
  381.    reserved characters used for their reserved purposes may be used
  382.  
  383.    unencoded within a URL.
  384.  
  385.  
  386.  
  387.    On the other hand, characters that are not required to be encoded
  388.  
  389.    (including alphanumerics) may be encoded within the scheme-specific
  390.  
  391.    part of a URL, as long as they are not being used for a reserved
  392.  
  393.    purpose.
  394.  
  395.  
  396.  
  397. 2.3 Hierarchical schemes and relative links
  398.  
  399.  
  400.  
  401.    In some cases, URLs are used to locate resources that contain
  402.  
  403.    pointers to other resources. In some cases, those pointers are
  404.  
  405.    represented as relative links where the expression of the location of
  406.  
  407.    the second resource is in terms of "in the same place as this one
  408.  
  409.    except with the following relative path". Relative links are not
  410.  
  411.    described in this document. However, the use of relative links
  412.  
  413.    depends on the original URL containing a hierarchical structure
  414.  
  415.    against which the relative link is based.
  416.  
  417.  
  418.  
  419.    Some URL schemes (such as the ftp, http, and file schemes) contain
  420.  
  421.    names that can be considered hierarchical; the components of the
  422.  
  423.    hierarchy are separated by "/".
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451. Berners-Lee, Masinter & McCahill                                [Page 4]
  452.  
  453.  
  454.  
  455. RFC 1738            Uniform Resource Locators (URL)        December 1994
  456.  
  457.  
  458.  
  459.  
  460.  
  461. 3. Specific Schemes
  462.  
  463.  
  464.  
  465.    The mapping for some existing standard and experimental protocols is
  466.  
  467.    outlined in the BNF syntax definition.  Notes on particular protocols
  468.  
  469.    follow. The schemes covered are:
  470.  
  471.  
  472.  
  473.    ftp                     File Transfer protocol
  474.  
  475.    http                    Hypertext Transfer Protocol
  476.  
  477.    gopher                  The Gopher protocol
  478.  
  479.    mailto                  Electronic mail address
  480.  
  481.    news                    USENET news
  482.  
  483.    nntp                    USENET news using NNTP access
  484.  
  485.    telnet                  Reference to interactive sessions
  486.  
  487.    wais                    Wide Area Information Servers
  488.  
  489.    file                    Host-specific file names
  490.  
  491.    prospero                Prospero Directory Service
  492.  
  493.  
  494.  
  495.    Other schemes may be specified by future specifications. Section 4 of
  496.  
  497.    this document describes how new schemes may be registered, and lists
  498.  
  499.    some scheme names that are under development.
  500.  
  501.  
  502.  
  503. 3.1. Common Internet Scheme Syntax
  504.  
  505.  
  506.  
  507.    While the syntax for the rest of the URL may vary depending on the
  508.  
  509.    particular scheme selected, URL schemes that involve the direct use
  510.  
  511.    of an IP-based protocol to a specified host on the Internet use a
  512.  
  513.    common syntax for the scheme-specific data:
  514.  
  515.  
  516.  
  517.         //<user>:<password>@<host>:<port>/<url-path>
  518.  
  519.  
  520.  
  521.    Some or all of the parts "<user>:<password>@", ":<password>",
  522.  
  523.    ":<port>", and "/<url-path>" may be excluded.  The scheme specific
  524.  
  525.    data start with a double slash "//" to indicate that it complies with
  526.  
  527.    the common Internet scheme syntax. The different components obey the
  528.  
  529.    following rules:
  530.  
  531.  
  532.  
  533.     user
  534.  
  535.         An optional user name. Some schemes (e.g., ftp) allow the
  536.  
  537.         specification of a user name.
  538.  
  539.  
  540.  
  541.     password
  542.  
  543.         An optional password. If present, it follows the user
  544.  
  545.         name separated from it by a colon.
  546.  
  547.  
  548.  
  549.    The user name (and password), if present, are followed by a
  550.  
  551.    commercial at-sign "@". Within the user and password field, any ":",
  552.  
  553.    "@", or "/" must be encoded.
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563. Berners-Lee, Masinter & McCahill                                [Page 5]
  564.  
  565.  
  566.  
  567. RFC 1738            Uniform Resource Locators (URL)        December 1994
  568.  
  569.  
  570.  
  571.  
  572.  
  573.    Note that an empty user name or password is different than no user
  574.  
  575.    name or password; there is no way to specify a password without
  576.  
  577.    specifying a user name. E.g., <URL:ftp://@host.com/> has an empty
  578.  
  579.    user name and no password, <URL:ftp://host.com/> has no user name,
  580.  
  581.    while <URL:ftp://foo:@host.com/> has a user name of "foo" and an
  582.  
  583.    empty password.
  584.  
  585.  
  586.  
  587.     host
  588.  
  589.         The fully qualified domain name of a network host, or its IP
  590.  
  591.         address as a set of four decimal digit groups separated by
  592.  
  593.         ".". Fully qualified domain names take the form as described
  594.  
  595.         in Section 3.5 of RFC 1034 [13] and Section 2.1 of RFC 1123
  596.  
  597.         [5]: a sequence of domain labels separated by ".", each domain
  598.  
  599.         label starting and ending with an alphanumerical character and
  600.  
  601.         possibly also containing "-" characters. The rightmost domain
  602.  
  603.         label will never start with a digit, though, which
  604.  
  605.         syntactically distinguishes all domain names from the IP
  606.  
  607.         addresses.
  608.  
  609.  
  610.  
  611.     port
  612.  
  613.         The port number to connect to. Most schemes designate
  614.  
  615.         protocols that have a default port number. Another port number
  616.  
  617.         may optionally be supplied, in decimal, separated from the
  618.  
  619.         host by a colon. If the port is omitted, the colon is as well.
  620.  
  621.  
  622.  
  623.     url-path
  624.  
  625.         The rest of the locator consists of data specific to the
  626.  
  627.         scheme, and is known as the "url-path". It supplies the
  628.  
  629.         details of how the specified resource can be accessed. Note
  630.  
  631.         that the "/" between the host (or port) and the url-path is
  632.  
  633.         NOT part of the url-path.
  634.  
  635.  
  636.  
  637.    The url-path syntax depends on the scheme being used, as does the
  638.  
  639.    manner in which it is interpreted.
  640.  
  641.  
  642.  
  643. 3.2. FTP
  644.  
  645.  
  646.  
  647.    The FTP URL scheme is used to designate files and directories on
  648.  
  649.    Internet hosts accessible using the FTP protocol (RFC959).
  650.  
  651.  
  652.  
  653.    A FTP URL follow the syntax described in Section 3.1.  If :<port> is
  654.  
  655.    omitted, the port defaults to 21.
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675. Berners-Lee, Masinter & McCahill                                [Page 6]
  676.  
  677.  
  678.  
  679. RFC 1738            Uniform Resource Locators (URL)        December 1994
  680.  
  681.  
  682.  
  683.  
  684.  
  685. 3.2.1. FTP Name and Password
  686.  
  687.  
  688.  
  689.    A user name and password may be supplied; they are used in the ftp
  690.  
  691.    "USER" and "PASS" commands after first making the connection to the
  692.  
  693.    FTP server.  If no user name or password is supplied and one is
  694.  
  695.    requested by the FTP server, the conventions for "anonymous" FTP are
  696.  
  697.    to be used, as follows:
  698.  
  699.  
  700.  
  701.         The user name "anonymous" is supplied.
  702.  
  703.  
  704.  
  705.         The password is supplied as the Internet e-mail address
  706.  
  707.         of the end user accessing the resource.
  708.  
  709.  
  710.  
  711.    If the URL supplies a user name but no password, and the remote
  712.  
  713.    server requests a password, the program interpreting the FTP URL
  714.  
  715.    should request one from the user.
  716.  
  717.  
  718.  
  719. 3.2.2. FTP url-path
  720.  
  721.  
  722.  
  723.    The url-path of a FTP URL has the following syntax:
  724.  
  725.  
  726.  
  727.         <cwd1>/<cwd2>/.../<cwdN>/<name>;type=<typecode>
  728.  
  729.  
  730.  
  731.    Where <cwd1> through <cwdN> and <name> are (possibly encoded) strings
  732.  
  733.    and <typecode> is one of the characters "a", "i", or "d".  The part
  734.  
  735.    ";type=<typecode>" may be omitted. The <cwdx> and <name> parts may be
  736.  
  737.    empty. The whole url-path may be omitted, including the "/"
  738.  
  739.    delimiting it from the prefix containing user, password, host, and
  740.  
  741.    port.
  742.  
  743.  
  744.  
  745.    The url-path is interpreted as a series of FTP commands as follows:
  746.  
  747.  
  748.  
  749.       Each of the <cwd> elements is to be supplied, sequentially, as the
  750.  
  751.       argument to a CWD (change working directory) command.
  752.  
  753.  
  754.  
  755.       If the typecode is "d", perform a NLST (name list) command with
  756.  
  757.       <name> as the argument, and interpret the results as a file
  758.  
  759.       directory listing.
  760.  
  761.  
  762.  
  763.       Otherwise, perform a TYPE command with <typecode> as the argument,
  764.  
  765.       and then access the file whose name is <name> (for example, using
  766.  
  767.       the RETR command.)
  768.  
  769.  
  770.  
  771.    Within a name or CWD component, the characters "/" and ";" are
  772.  
  773.    reserved and must be encoded. The components are decoded prior to
  774.  
  775.    their use in the FTP protocol.  In particular, if the appropriate FTP
  776.  
  777.    sequence to access a particular file requires supplying a string
  778.  
  779.    containing a "/" as an argument to a CWD or RETR command, it is
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787. Berners-Lee, Masinter & McCahill                                [Page 7]
  788.  
  789.  
  790.  
  791. RFC 1738            Uniform Resource Locators (URL)        December 1994
  792.  
  793.  
  794.  
  795.  
  796.  
  797.    necessary to encode each "/".
  798.  
  799.  
  800.  
  801.    For example, the URL <URL:ftp://myname@host.dom/%2Fetc/motd> is
  802.  
  803.    interpreted by FTP-ing to "host.dom", logging in as "myname"
  804.  
  805.    (prompting for a password if it is asked for), and then executing
  806.  
  807.    "CWD /etc" and then "RETR motd". This has a different meaning from
  808.  
  809.    <URL:ftp://myname@host.dom/etc/motd> which would "CWD etc" and then
  810.  
  811.    "RETR motd"; the initial "CWD" might be executed relative to the
  812.  
  813.    default directory for "myname". On the other hand,
  814.  
  815.    <URL:ftp://myname@host.dom//etc/motd>, would "CWD " with a null
  816.  
  817.    argument, then "CWD etc", and then "RETR motd".
  818.  
  819.  
  820.  
  821.    FTP URLs may also be used for other operations; for example, it is
  822.  
  823.    possible to update a file on a remote file server, or infer
  824.  
  825.    information about it from the directory listings. The mechanism for
  826.  
  827.    doing so is not spelled out here.
  828.  
  829.  
  830.  
  831. 3.2.3. FTP Typecode is Optional
  832.  
  833.  
  834.  
  835.    The entire ;type=<typecode> part of a FTP URL is optional. If it is
  836.  
  837.    omitted, the client program interpreting the URL must guess the
  838.  
  839.    appropriate mode to use. In general, the data content type of a file
  840.  
  841.    can only be guessed from the name, e.g., from the suffix of the name;
  842.  
  843.    the appropriate type code to be used for transfer of the file can
  844.  
  845.    then be deduced from the data content of the file.
  846.  
  847.  
  848.  
  849. 3.2.4 Hierarchy
  850.  
  851.  
  852.  
  853.    For some file systems, the "/" used to denote the hierarchical
  854.  
  855.    structure of the URL corresponds to the delimiter used to construct a
  856.  
  857.    file name hierarchy, and thus, the filename will look similar to the
  858.  
  859.    URL path. This does NOT mean that the URL is a Unix filename.
  860.  
  861.  
  862.  
  863. 3.2.5. Optimization
  864.  
  865.  
  866.  
  867.    Clients accessing resources via FTP may employ additional heuristics
  868.  
  869.    to optimize the interaction. For some FTP servers, for example, it
  870.  
  871.    may be reasonable to keep the control connection open while accessing
  872.  
  873.    multiple URLs from the same server. However, there is no common
  874.  
  875.    hierarchical model to the FTP protocol, so if a directory change
  876.  
  877.    command has been given, it is impossible in general to deduce what
  878.  
  879.    sequence should be given to navigate to another directory for a
  880.  
  881.    second retrieval, if the paths are different.  The only reliable
  882.  
  883.    algorithm is to disconnect and reestablish the control connection.
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899. Berners-Lee, Masinter & McCahill                                [Page 8]
  900.  
  901.  
  902.  
  903. RFC 1738            Uniform Resource Locators (URL)        December 1994
  904.  
  905.  
  906.  
  907.  
  908.  
  909. 3.3. HTTP
  910.  
  911.  
  912.  
  913.    The HTTP URL scheme is used to designate Internet resources
  914.  
  915.    accessible using HTTP (HyperText Transfer Protocol).
  916.  
  917.  
  918.  
  919.    The HTTP protocol is specified elsewhere. This specification only
  920.  
  921.    describes the syntax of HTTP URLs.
  922.  
  923.  
  924.  
  925.    An HTTP URL takes the form:
  926.  
  927.  
  928.  
  929.       http://<host>:<port>/<path>?<searchpart>
  930.  
  931.  
  932.  
  933.    where <host> and <port> are as described in Section 3.1. If :<port>
  934.  
  935.    is omitted, the port defaults to 80.  No user name or password is
  936.  
  937.    allowed.  <path> is an HTTP selector, and <searchpart> is a query
  938.  
  939.    string. The <path> is optional, as is the <searchpart> and its
  940.  
  941.    preceding "?". If neither <path> nor <searchpart> is present, the "/"
  942.  
  943.    may also be omitted.
  944.  
  945.  
  946.  
  947.    Within the <path> and <searchpart> components, "/", ";", "?" are
  948.  
  949.    reserved.  The "/" character may be used within HTTP to designate a
  950.  
  951.    hierarchical structure.
  952.  
  953.  
  954.  
  955. 3.4. GOPHER
  956.  
  957.  
  958.  
  959.    The Gopher URL scheme is used to designate Internet resources
  960.  
  961.    accessible using the Gopher protocol.
  962.  
  963.  
  964.  
  965.    The base Gopher protocol is described in RFC 1436 and supports items
  966.  
  967.    and collections of items (directories). The Gopher+ protocol is a set
  968.  
  969.    of upward compatible extensions to the base Gopher protocol and is
  970.  
  971.    described in [2]. Gopher+ supports associating arbitrary sets of
  972.  
  973.    attributes and alternate data representations with Gopher items.
  974.  
  975.    Gopher URLs accommodate both Gopher and Gopher+ items and item
  976.  
  977.    attributes.
  978.  
  979.  
  980.  
  981. 3.4.1. Gopher URL syntax
  982.  
  983.  
  984.  
  985.    A Gopher URL takes the form:
  986.  
  987.  
  988.  
  989.       gopher://<host>:<port>/<gopher-path>
  990.  
  991.  
  992.  
  993.    where <gopher-path> is one of
  994.  
  995.  
  996.  
  997.        <gophertype><selector>
  998.  
  999.        <gophertype><selector>%09<search>
  1000.  
  1001.        <gophertype><selector>%09<search>%09<gopher+_string>
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011. Berners-Lee, Masinter & McCahill                                [Page 9]
  1012.  
  1013.  
  1014.  
  1015. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.    If :<port> is omitted, the port defaults to 70.  <gophertype> is a
  1022.  
  1023.    single-character field to denote the Gopher type of the resource to
  1024.  
  1025.    which the URL refers. The entire <gopher-path> may also be empty, in
  1026.  
  1027.    which case the delimiting "/" is also optional and the <gophertype>
  1028.  
  1029.    defaults to "1".
  1030.  
  1031.  
  1032.  
  1033.    <selector> is the Gopher selector string.  In the Gopher protocol,
  1034.  
  1035.    Gopher selector strings are a sequence of octets which may contain
  1036.  
  1037.    any octets except 09 hexadecimal (US-ASCII HT or tab) 0A hexadecimal
  1038.  
  1039.    (US-ASCII character LF), and 0D (US-ASCII character CR).
  1040.  
  1041.  
  1042.  
  1043.    Gopher clients specify which item to retrieve by sending the Gopher
  1044.  
  1045.    selector string to a Gopher server.
  1046.  
  1047.  
  1048.  
  1049.    Within the <gopher-path>, no characters are reserved.
  1050.  
  1051.  
  1052.  
  1053.    Note that some Gopher <selector> strings begin with a copy of the
  1054.  
  1055.    <gophertype> character, in which case that character will occur twice
  1056.  
  1057.    consecutively. The Gopher selector string may be an empty string;
  1058.  
  1059.    this is how Gopher clients refer to the top-level directory on a
  1060.  
  1061.    Gopher server.
  1062.  
  1063.  
  1064.  
  1065. 3.4.2 Specifying URLs for Gopher Search Engines
  1066.  
  1067.  
  1068.  
  1069.    If the URL refers to a search to be submitted to a Gopher search
  1070.  
  1071.    engine, the selector is followed by an encoded tab (%09) and the
  1072.  
  1073.    search string. To submit a search to a Gopher search engine, the
  1074.  
  1075.    Gopher client sends the <selector> string (after decoding), a tab,
  1076.  
  1077.    and the search string to the Gopher server.
  1078.  
  1079.  
  1080.  
  1081. 3.4.3 URL syntax for Gopher+ items
  1082.  
  1083.  
  1084.  
  1085.    URLs for Gopher+ items have a second encoded tab (%09) and a Gopher+
  1086.  
  1087.    string. Note that in this case, the %09<search> string must be
  1088.  
  1089.    supplied, although the <search> element may be the empty string.
  1090.  
  1091.  
  1092.  
  1093.    The <gopher+_string> is used to represent information required for
  1094.  
  1095.    retrieval of the Gopher+ item. Gopher+ items may have alternate
  1096.  
  1097.    views, arbitrary sets of attributes, and may have electronic forms
  1098.  
  1099.    associated with them.
  1100.  
  1101.  
  1102.  
  1103.    To retrieve the data associated with a Gopher+ URL, a client will
  1104.  
  1105.    connect to the server and send the Gopher selector, followed by a tab
  1106.  
  1107.    and the search string (which may be empty), followed by a tab and the
  1108.  
  1109.    Gopher+ commands.
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123. Berners-Lee, Masinter & McCahill                               [Page 10]
  1124.  
  1125.  
  1126.  
  1127. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133. 3.4.4 Default Gopher+ data representation
  1134.  
  1135.  
  1136.  
  1137.    When a Gopher server returns a directory listing to a client, the
  1138.  
  1139.    Gopher+ items are tagged with either a "+" (denoting Gopher+ items)
  1140.  
  1141.    or a "?" (denoting Gopher+ items which have a +ASK form associated
  1142.  
  1143.    with them). A Gopher URL with a Gopher+ string consisting of only a
  1144.  
  1145.    "+" refers to the default view (data representation) of the item
  1146.  
  1147.    while a Gopher+ string containing only a "?" refer to an item with a
  1148.  
  1149.    Gopher electronic form associated with it.
  1150.  
  1151.  
  1152.  
  1153. 3.4.5 Gopher+ items with electronic forms
  1154.  
  1155.  
  1156.  
  1157.    Gopher+ items which have a +ASK associated with them (i.e. Gopher+
  1158.  
  1159.    items tagged with a "?") require the client to fetch the item's +ASK
  1160.  
  1161.    attribute to get the form definition, and then ask the user to fill
  1162.  
  1163.    out the form and return the user's responses along with the selector
  1164.  
  1165.    string to retrieve the item.  Gopher+ clients know how to do this but
  1166.  
  1167.    depend on the "?" tag in the Gopher+ item description to know when to
  1168.  
  1169.    handle this case. The "?" is used in the Gopher+ string to be
  1170.  
  1171.    consistent with Gopher+ protocol's use of this symbol.
  1172.  
  1173.  
  1174.  
  1175. 3.4.6 Gopher+ item attribute collections
  1176.  
  1177.  
  1178.  
  1179.    To refer to the Gopher+ attributes of an item, the Gopher URL's
  1180.  
  1181.    Gopher+ string consists of "!" or "$". "!" refers to the all of a
  1182.  
  1183.    Gopher+ item's attributes. "$" refers to all the item attributes for
  1184.  
  1185.    all items in a Gopher directory.
  1186.  
  1187.  
  1188.  
  1189. 3.4.7 Referring to specific Gopher+ attributes
  1190.  
  1191.  
  1192.  
  1193.    To refer to specific attributes, the URL's gopher+_string is
  1194.  
  1195.    "!<attribute_name>" or "$<attribute_name>". For example, to refer to
  1196.  
  1197.    the attribute containing the abstract of an item, the gopher+_string
  1198.  
  1199.    would be "!+ABSTRACT".
  1200.  
  1201.  
  1202.  
  1203.    To refer to several attributes, the gopher+_string consists of the
  1204.  
  1205.    attribute names separated by coded spaces. For example,
  1206.  
  1207.    "!+ABSTRACT%20+SMELL" refers to the +ABSTRACT and +SMELL attributes
  1208.  
  1209.    of an item.
  1210.  
  1211.  
  1212.  
  1213. 3.4.8 URL syntax for Gopher+ alternate views
  1214.  
  1215.  
  1216.  
  1217.    Gopher+ allows for optional alternate data representations (alternate
  1218.  
  1219.    views) of items. To retrieve a Gopher+ alternate view, a Gopher+
  1220.  
  1221.    client sends the appropriate view and language identifier (found in
  1222.  
  1223.    the item's +VIEW attribute). To refer to a specific Gopher+ alternate
  1224.  
  1225.    view, the URL's Gopher+ string would be in the form:
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235. Berners-Lee, Masinter & McCahill                               [Page 11]
  1236.  
  1237.  
  1238.  
  1239. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.         +<view_name>%20<language_name>
  1246.  
  1247.  
  1248.  
  1249.    For example, a Gopher+ string of "+application/postscript%20Es_ES"
  1250.  
  1251.    refers to the Spanish language postscript alternate view of a Gopher+
  1252.  
  1253.    item.
  1254.  
  1255.  
  1256.  
  1257. 3.4.9 URL syntax for Gopher+ electronic forms
  1258.  
  1259.  
  1260.  
  1261.    The gopher+_string for a URL that refers to an item referenced by a
  1262.  
  1263.    Gopher+ electronic form (an ASK block) filled out with specific
  1264.  
  1265.    values is a coded version of what the client sends to the server.
  1266.  
  1267.    The gopher+_string is of the form:
  1268.  
  1269.  
  1270.  
  1271. +%091%0D%0A+-1%0D%0A<ask_item1_value>%0D%0A<ask_item2_value>%0D%0A.%0D%0A
  1272.  
  1273.  
  1274.  
  1275.    To retrieve this item, the Gopher client sends:
  1276.  
  1277.  
  1278.  
  1279.        <a_gopher_selector><tab>+<tab>1<cr><lf>
  1280.  
  1281.        +-1<cr><lf>
  1282.  
  1283.        <ask_item1_value><cr><lf>
  1284.  
  1285.        <ask_item2_value><cr><lf>
  1286.  
  1287.        .<cr><lf>
  1288.  
  1289.  
  1290.  
  1291.    to the Gopher server.
  1292.  
  1293.  
  1294.  
  1295. 3.5. MAILTO
  1296.  
  1297.  
  1298.  
  1299.    The mailto URL scheme is used to designate the Internet mailing
  1300.  
  1301.    address of an individual or service. No additional information other
  1302.  
  1303.    than an Internet mailing address is present or implied.
  1304.  
  1305.  
  1306.  
  1307.    A mailto URL takes the form:
  1308.  
  1309.  
  1310.  
  1311.         mailto:<rfc822-addr-spec>
  1312.  
  1313.  
  1314.  
  1315.    where <rfc822-addr-spec> is (the encoding of an) addr-spec, as
  1316.  
  1317.    specified in RFC 822 [6]. Within mailto URLs, there are no reserved
  1318.  
  1319.    characters.
  1320.  
  1321.  
  1322.  
  1323.    Note that the percent sign ("%") is commonly used within RFC 822
  1324.  
  1325.    addresses and must be encoded.
  1326.  
  1327.  
  1328.  
  1329.    Unlike many URLs, the mailto scheme does not represent a data object
  1330.  
  1331.    to be accessed directly; there is no sense in which it designates an
  1332.  
  1333.    object. It has a different use than the message/external-body type in
  1334.  
  1335.    MIME.
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347. Berners-Lee, Masinter & McCahill                               [Page 12]
  1348.  
  1349.  
  1350.  
  1351. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357. 3.6. NEWS
  1358.  
  1359.  
  1360.  
  1361.    The news URL scheme is used to refer to either news groups or
  1362.  
  1363.    individual articles of USENET news, as specified in RFC 1036.
  1364.  
  1365.  
  1366.  
  1367.    A news URL takes one of two forms:
  1368.  
  1369.  
  1370.  
  1371.      news:<newsgroup-name>
  1372.  
  1373.      news:<message-id>
  1374.  
  1375.  
  1376.  
  1377.    A <newsgroup-name> is a period-delimited hierarchical name, such as
  1378.  
  1379.    "comp.infosystems.www.misc". A <message-id> corresponds to the
  1380.  
  1381.    Message-ID of section 2.1.5 of RFC 1036, without the enclosing "<"
  1382.  
  1383.    and ">"; it takes the form <unique>@<full_domain_name>.  A message
  1384.  
  1385.    identifier may be distinguished from a news group name by the
  1386.  
  1387.    presence of the commercial at "@" character. No additional characters
  1388.  
  1389.    are reserved within the components of a news URL.
  1390.  
  1391.  
  1392.  
  1393.    If <newsgroup-name> is "*" (as in <URL:news:*>), it is used to refer
  1394.  
  1395.    to "all available news groups".
  1396.  
  1397.  
  1398.  
  1399.    The news URLs are unusual in that by themselves, they do not contain
  1400.  
  1401.    sufficient information to locate a single resource, but, rather, are
  1402.  
  1403.    location-independent.
  1404.  
  1405.  
  1406.  
  1407. 3.7. NNTP
  1408.  
  1409.  
  1410.  
  1411.    The nntp URL scheme is an alternative method of referencing news
  1412.  
  1413.    articles, useful for specifying news articles from NNTP servers (RFC
  1414.  
  1415.    977).
  1416.  
  1417.  
  1418.  
  1419.    A nntp URL take the form:
  1420.  
  1421.  
  1422.  
  1423.       nntp://<host>:<port>/<newsgroup-name>/<article-number>
  1424.  
  1425.  
  1426.  
  1427.    where <host> and <port> are as described in Section 3.1. If :<port>
  1428.  
  1429.    is omitted, the port defaults to 119.
  1430.  
  1431.  
  1432.  
  1433.    The <newsgroup-name> is the name of the group, while the <article-
  1434.  
  1435.    number> is the numeric id of the article within that newsgroup.
  1436.  
  1437.  
  1438.  
  1439.    Note that while nntp: URLs specify a unique location for the article
  1440.  
  1441.    resource, most NNTP servers currently on the Internet today are
  1442.  
  1443.    configured only to allow access from local clients, and thus nntp
  1444.  
  1445.    URLs do not designate globally accessible resources. Thus, the news:
  1446.  
  1447.    form of URL is preferred as a way of identifying news articles.
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459. Berners-Lee, Masinter & McCahill                               [Page 13]
  1460.  
  1461.  
  1462.  
  1463. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469. 3.8. TELNET
  1470.  
  1471.  
  1472.  
  1473.    The Telnet URL scheme is used to designate interactive services that
  1474.  
  1475.    may be accessed by the Telnet protocol.
  1476.  
  1477.  
  1478.  
  1479.    A telnet URL takes the form:
  1480.  
  1481.  
  1482.  
  1483.        telnet://<user>:<password>@<host>:<port>/
  1484.  
  1485.  
  1486.  
  1487.    as specified in Section 3.1. The final "/" character may be omitted.
  1488.  
  1489.    If :<port> is omitted, the port defaults to 23.  The :<password> can
  1490.  
  1491.    be omitted, as well as the whole <user>:<password> part.
  1492.  
  1493.  
  1494.  
  1495.    This URL does not designate a data object, but rather an interactive
  1496.  
  1497.    service. Remote interactive services vary widely in the means by
  1498.  
  1499.    which they allow remote logins; in practice, the <user> and
  1500.  
  1501.    <password> supplied are advisory only: clients accessing a telnet URL
  1502.  
  1503.    merely advise the user of the suggested username and password.
  1504.  
  1505.  
  1506.  
  1507. 3.9.  WAIS
  1508.  
  1509.  
  1510.  
  1511.    The WAIS URL scheme is used to designate WAIS databases, searches, or
  1512.  
  1513.    individual documents available from a WAIS database. WAIS is
  1514.  
  1515.    described in [7]. The WAIS protocol is described in RFC 1625 [17];
  1516.  
  1517.    Although the WAIS protocol is based on Z39.50-1988, the WAIS URL
  1518.  
  1519.    scheme is not intended for use with arbitrary Z39.50 services.
  1520.  
  1521.  
  1522.  
  1523.    A WAIS URL takes one of the following forms:
  1524.  
  1525.  
  1526.  
  1527.      wais://<host>:<port>/<database>
  1528.  
  1529.      wais://<host>:<port>/<database>?<search>
  1530.  
  1531.      wais://<host>:<port>/<database>/<wtype>/<wpath>
  1532.  
  1533.  
  1534.  
  1535.    where <host> and <port> are as described in Section 3.1. If :<port>
  1536.  
  1537.    is omitted, the port defaults to 210.  The first form designates a
  1538.  
  1539.    WAIS database that is available for searching. The second form
  1540.  
  1541.    designates a particular search.  <database> is the name of the WAIS
  1542.  
  1543.    database being queried.
  1544.  
  1545.  
  1546.  
  1547.    The third form designates a particular document within a WAIS
  1548.  
  1549.    database to be retrieved. In this form <wtype> is the WAIS
  1550.  
  1551.    designation of the type of the object. Many WAIS implementations
  1552.  
  1553.    require that a client know the "type" of an object prior to
  1554.  
  1555.    retrieval, the type being returned along with the internal object
  1556.  
  1557.    identifier in the search response.  The <wtype> is included in the
  1558.  
  1559.    URL in order to allow the client interpreting the URL adequate
  1560.  
  1561.    information to actually retrieve the document.
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571. Berners-Lee, Masinter & McCahill                               [Page 14]
  1572.  
  1573.  
  1574.  
  1575. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.    The <wpath> of a WAIS URL consists of the WAIS document-id, encoded
  1582.  
  1583.    as necessary using the method described in Section 2.2. The WAIS
  1584.  
  1585.    document-id should be treated opaquely; it may only be decomposed by
  1586.  
  1587.    the server that issued it.
  1588.  
  1589.  
  1590.  
  1591. 3.10 FILES
  1592.  
  1593.  
  1594.  
  1595.    The file URL scheme is used to designate files accessible on a
  1596.  
  1597.    particular host computer. This scheme, unlike most other URL schemes,
  1598.  
  1599.    does not designate a resource that is universally accessible over the
  1600.  
  1601.    Internet.
  1602.  
  1603.  
  1604.  
  1605.    A file URL takes the form:
  1606.  
  1607.  
  1608.  
  1609.        file://<host>/<path>
  1610.  
  1611.  
  1612.  
  1613.    where <host> is the fully qualified domain name of the system on
  1614.  
  1615.    which the <path> is accessible, and <path> is a hierarchical
  1616.  
  1617.    directory path of the form <directory>/<directory>/.../<name>.
  1618.  
  1619.  
  1620.  
  1621.    For example, a VMS file
  1622.  
  1623.  
  1624.  
  1625.      DISK$USER:[MY.NOTES]NOTE123456.TXT
  1626.  
  1627.  
  1628.  
  1629.    might become
  1630.  
  1631.  
  1632.  
  1633.      <URL:file://vms.host.edu/disk$user/my/notes/note12345.txt>
  1634.  
  1635.  
  1636.  
  1637.    As a special case, <host> can be the string "localhost" or the empty
  1638.  
  1639.    string; this is interpreted as `the machine from which the URL is
  1640.  
  1641.    being interpreted'.
  1642.  
  1643.  
  1644.  
  1645.    The file URL scheme is unusual in that it does not specify an
  1646.  
  1647.    Internet protocol or access method for such files; as such, its
  1648.  
  1649.    utility in network protocols between hosts is limited.
  1650.  
  1651.  
  1652.  
  1653. 3.11 PROSPERO
  1654.  
  1655.  
  1656.  
  1657.    The Prospero URL scheme is used to designate resources that are
  1658.  
  1659.    accessed via the Prospero Directory Service. The Prospero protocol is
  1660.  
  1661.    described elsewhere [14].
  1662.  
  1663.  
  1664.  
  1665.    A prospero URLs takes the form:
  1666.  
  1667.  
  1668.  
  1669.       prospero://<host>:<port>/<hsoname>;<field>=<value>
  1670.  
  1671.  
  1672.  
  1673.    where <host> and <port> are as described in Section 3.1. If :<port>
  1674.  
  1675.    is omitted, the port defaults to 1525. No username or password is
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683. Berners-Lee, Masinter & McCahill                               [Page 15]
  1684.  
  1685.  
  1686.  
  1687. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.    allowed.
  1694.  
  1695.  
  1696.  
  1697.    The <hsoname> is the host-specific object name in the Prospero
  1698.  
  1699.    protocol, suitably encoded.  This name is opaque and interpreted by
  1700.  
  1701.    the Prospero server.  The semicolon ";" is reserved and may not
  1702.  
  1703.    appear without quoting in the <hsoname>.
  1704.  
  1705.  
  1706.  
  1707.    Prospero URLs are interpreted by contacting a Prospero directory
  1708.  
  1709.    server on the specified host and port to determine appropriate access
  1710.  
  1711.    methods for a resource, which might themselves be represented as
  1712.  
  1713.    different URLs. External Prospero links are represented as URLs of
  1714.  
  1715.    the underlying access method and are not represented as Prospero
  1716.  
  1717.    URLs.
  1718.  
  1719.  
  1720.  
  1721.    Note that a slash "/" may appear in the <hsoname> without quoting and
  1722.  
  1723.    no significance may be assumed by the application.  Though slashes
  1724.  
  1725.    may indicate hierarchical structure on the server, such structure is
  1726.  
  1727.    not guaranteed. Note that many <hsoname>s begin with a slash, in
  1728.  
  1729.    which case the host or port will be followed by a double slash: the
  1730.  
  1731.    slash from the URL syntax, followed by the initial slash from the
  1732.  
  1733.    <hsoname>. (E.g., <URL:prospero://host.dom//pros/name> designates a
  1734.  
  1735.    <hsoname> of "/pros/name".)
  1736.  
  1737.  
  1738.  
  1739.    In addition, after the <hsoname>, optional fields and values
  1740.  
  1741.    associated with a Prospero link may be specified as part of the URL.
  1742.  
  1743.    When present, each field/value pair is separated from each other and
  1744.  
  1745.    from the rest of the URL by a ";" (semicolon).  The name of the field
  1746.  
  1747.    and its value are separated by a "=" (equal sign). If present, these
  1748.  
  1749.    fields serve to identify the target of the URL.  For example, the
  1750.  
  1751.    OBJECT-VERSION field can be specified to identify a specific version
  1752.  
  1753.    of an object.
  1754.  
  1755.  
  1756.  
  1757. 4. REGISTRATION OF NEW SCHEMES
  1758.  
  1759.  
  1760.  
  1761.    A new scheme may be introduced by defining a mapping onto a
  1762.  
  1763.    conforming URL syntax, using a new prefix. URLs for experimental
  1764.  
  1765.    schemes may be used by mutual agreement between parties. Scheme names
  1766.  
  1767.    starting with the characters "x-" are reserved for experimental
  1768.  
  1769.    purposes.
  1770.  
  1771.  
  1772.  
  1773.    The Internet Assigned Numbers Authority (IANA) will maintain a
  1774.  
  1775.    registry of URL schemes. Any submission of a new URL scheme must
  1776.  
  1777.    include a definition of an algorithm for accessing of resources
  1778.  
  1779.    within that scheme and the syntax for representing such a scheme.
  1780.  
  1781.  
  1782.  
  1783.    URL schemes must have demonstrable utility and operability.  One way
  1784.  
  1785.    to provide such a demonstration is via a gateway which provides
  1786.  
  1787.    objects in the new scheme for clients using an existing protocol.  If
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795. Berners-Lee, Masinter & McCahill                               [Page 16]
  1796.  
  1797.  
  1798.  
  1799. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.    the new scheme does not locate resources that are data objects, the
  1806.  
  1807.    properties of names in the new space must be clearly defined.
  1808.  
  1809.  
  1810.  
  1811.    New schemes should try to follow the same syntactic conventions of
  1812.  
  1813.    existing schemes, where appropriate.  It is likewise recommended
  1814.  
  1815.    that, where a protocol allows for retrieval by URL, that the client
  1816.  
  1817.    software have provision for being configured to use specific gateway
  1818.  
  1819.    locators for indirect access through new naming schemes.
  1820.  
  1821.  
  1822.  
  1823.    The following scheme have been proposed at various times, but this
  1824.  
  1825.    document does not define their syntax or use at this time. It is
  1826.  
  1827.    suggested that IANA reserve their scheme names for future definition:
  1828.  
  1829.  
  1830.  
  1831.    afs              Andrew File System global file names.
  1832.  
  1833.    mid              Message identifiers for electronic mail.
  1834.  
  1835.    cid              Content identifiers for MIME body parts.
  1836.  
  1837.    nfs              Network File System (NFS) file names.
  1838.  
  1839.    tn3270           Interactive 3270 emulation sessions.
  1840.  
  1841.    mailserver       Access to data available from mail servers.
  1842.  
  1843.    z39.50           Access to ANSI Z39.50 services.
  1844.  
  1845.  
  1846.  
  1847. 5. BNF for specific URL schemes
  1848.  
  1849.  
  1850.  
  1851.    This is a BNF-like description of the Uniform Resource Locator
  1852.  
  1853.    syntax, using the conventions of RFC822, except that "|" is used to
  1854.  
  1855.    designate alternatives, and brackets [] are used around optional or
  1856.  
  1857.    repeated elements. Briefly, literals are quoted with "", optional
  1858.  
  1859.    elements are enclosed in [brackets], and elements may be preceded
  1860.  
  1861.    with <n>* to designate n or more repetitions of the following
  1862.  
  1863.    element; n defaults to 0.
  1864.  
  1865.  
  1866.  
  1867. ; The generic form of a URL is:
  1868.  
  1869.  
  1870.  
  1871. genericurl     = scheme ":" schemepart
  1872.  
  1873.  
  1874.  
  1875. ; Specific predefined schemes are defined here; new schemes
  1876.  
  1877. ; may be registered with IANA
  1878.  
  1879.  
  1880.  
  1881. url            = httpurl | ftpurl | newsurl |
  1882.  
  1883.                  nntpurl | telneturl | gopherurl |
  1884.  
  1885.                  waisurl | mailtourl | fileurl |
  1886.  
  1887.                  prosperourl | otherurl
  1888.  
  1889.  
  1890.  
  1891. ; new schemes follow the general syntax
  1892.  
  1893. otherurl       = genericurl
  1894.  
  1895.  
  1896.  
  1897. ; the scheme is in lower case; interpreters should use case-ignore
  1898.  
  1899. scheme         = 1*[ lowalpha | digit | "+" | "-" | "." ]
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907. Berners-Lee, Masinter & McCahill                               [Page 17]
  1908.  
  1909.  
  1910.  
  1911. RFC 1738            Uniform Resource Locators (URL)        December 1994
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917. schemepart     = *xchar | ip-schemepart
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923. ; URL schemeparts for ip based protocols:
  1924.  
  1925.  
  1926.  
  1927. ip-schemepart  = "//" login [ "/" urlpath ]
  1928.  
  1929.  
  1930.  
  1931. login          = [ user [ ":" password ] "@" ] hostport
  1932.  
  1933. hostport       = host [ ":" port ]
  1934.  
  1935. host           = hostname | hostnumber
  1936.  
  1937. hostname       = *[ domainlabel "." ] toplabel
  1938.  
  1939. domainlabel    = alphadigit | alphadigit *[ alphadigit | "-" ] alphadigit
  1940.  
  1941. toplabel       = alpha | alpha *[ alphadigit | "-" ] alphadigit
  1942.  
  1943. alphadigit     = alpha | digit
  1944.  
  1945. hostnumber     = digits "." digits "." digits "." digits
  1946.  
  1947. port           = digits
  1948.  
  1949. user           = *[ uchar | ";" | "?" | "&" | "=" ]
  1950.  
  1951. password       = *[ uchar | ";" | "?" | "&" | "=" ]
  1952.  
  1953. urlpath        = *xchar    ; depends on protocol see section 3.1
  1954.  
  1955.  
  1956.  
  1957. ; The predefined schemes:
  1958.  
  1959.  
  1960.  
  1961. ; FTP (see also RFC959)
  1962.  
  1963.  
  1964.  
  1965. ftpurl         = "ftp://" login [ "/" fpath [ ";type=" ftptype ]]
  1966.  
  1967. fpath          = fsegment *[ "/" fsegment ]
  1968.  
  1969. fsegment       = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
  1970.  
  1971. ftptype        = "A" | "I" | "D" | "a" | "i" | "d"
  1972.  
  1973.  
  1974.  
  1975. ; FILE
  1976.  
  1977.  
  1978.  
  1979. fileurl        = "file://" [ host | "localhost" ] "/" fpath
  1980.  
  1981.  
  1982.  
  1983. ; HTTP
  1984.  
  1985.  
  1986.  
  1987. httpurl        = "http://" hostport [ "/" hpath [ "?" search ]]
  1988.  
  1989. hpath          = hsegment *[ "/" hsegment ]
  1990.  
  1991. hsegment       = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
  1992.  
  1993. search         = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
  1994.  
  1995.  
  1996.  
  1997. ; GOPHER (see also RFC1436)
  1998.  
  1999.  
  2000.  
  2001. gopherurl      = "gopher://" hostport [ / [ gtype [ selector
  2002.  
  2003.                  [ "%09" search [ "%09" gopher+_string ] ] ] ] ]
  2004.  
  2005. gtype          = xchar
  2006.  
  2007. selector       = *xchar
  2008.  
  2009. gopher+_string = *xchar
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019. Berners-Lee, Masinter & McCahill                               [Page 18]
  2020.  
  2021.  
  2022.  
  2023. RFC 1738            Uniform Resource Locators (URL)        December 1994
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029. ; MAILTO (see also RFC822)
  2030.  
  2031.  
  2032.  
  2033. mailtourl      = "mailto:" encoded822addr
  2034.  
  2035. encoded822addr = 1*xchar               ; further defined in RFC822
  2036.  
  2037.  
  2038.  
  2039. ; NEWS (see also RFC1036)
  2040.  
  2041.  
  2042.  
  2043. newsurl        = "news:" grouppart
  2044.  
  2045. grouppart      = "*" | group | article
  2046.  
  2047. group          = alpha *[ alpha | digit | "-" | "." | "+" | "_" ]
  2048.  
  2049. article        = 1*[ uchar | ";" | "/" | "?" | ":" | "&" | "=" ] "@" host
  2050.  
  2051.  
  2052.  
  2053. ; NNTP (see also RFC977)
  2054.  
  2055.  
  2056.  
  2057. nntpurl        = "nntp://" hostport "/" group [ "/" digits ]
  2058.  
  2059.  
  2060.  
  2061. ; TELNET
  2062.  
  2063.  
  2064.  
  2065. telneturl      = "telnet://" login [ "/" ]
  2066.  
  2067.  
  2068.  
  2069. ; WAIS (see also RFC1625)
  2070.  
  2071.  
  2072.  
  2073. waisurl        = waisdatabase | waisindex | waisdoc
  2074.  
  2075. waisdatabase   = "wais://" hostport "/" database
  2076.  
  2077. waisindex      = "wais://" hostport "/" database "?" search
  2078.  
  2079. waisdoc        = "wais://" hostport "/" database "/" wtype "/" wpath
  2080.  
  2081. database       = *uchar
  2082.  
  2083. wtype          = *uchar
  2084.  
  2085. wpath          = *uchar
  2086.  
  2087.  
  2088.  
  2089. ; PROSPERO
  2090.  
  2091.  
  2092.  
  2093. prosperourl    = "prospero://" hostport "/" ppath *[ fieldspec ]
  2094.  
  2095. ppath          = psegment *[ "/" psegment ]
  2096.  
  2097. psegment       = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
  2098.  
  2099. fieldspec      = ";" fieldname "=" fieldvalue
  2100.  
  2101. fieldname      = *[ uchar | "?" | ":" | "@" | "&" ]
  2102.  
  2103. fieldvalue     = *[ uchar | "?" | ":" | "@" | "&" ]
  2104.  
  2105.  
  2106.  
  2107. ; Miscellaneous definitions
  2108.  
  2109.  
  2110.  
  2111. lowalpha       = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
  2112.  
  2113.                  "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
  2114.  
  2115.                  "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
  2116.  
  2117.                  "y" | "z"
  2118.  
  2119. hialpha        = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |
  2120.  
  2121.                  "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
  2122.  
  2123.                  "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131. Berners-Lee, Masinter & McCahill                               [Page 19]
  2132.  
  2133.  
  2134.  
  2135. RFC 1738            Uniform Resource Locators (URL)        December 1994
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141. alpha          = lowalpha | hialpha
  2142.  
  2143. digit          = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
  2144.  
  2145.                  "8" | "9"
  2146.  
  2147. safe           = "$" | "-" | "_" | "." | "+"
  2148.  
  2149. extra          = "!" | "*" | "'" | "(" | ")" | ","
  2150.  
  2151. national       = "{" | "}" | "|" | "\" | "^" | "~" | "[" | "]" | "`"
  2152.  
  2153. punctuation    = "<" | ">" | "#" | "%" | <">
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159. reserved       = ";" | "/" | "?" | ":" | "@" | "&" | "="
  2160.  
  2161. hex            = digit | "A" | "B" | "C" | "D" | "E" | "F" |
  2162.  
  2163.                  "a" | "b" | "c" | "d" | "e" | "f"
  2164.  
  2165. escape         = "%" hex hex
  2166.  
  2167.  
  2168.  
  2169. unreserved     = alpha | digit | safe | extra
  2170.  
  2171. uchar          = unreserved | escape
  2172.  
  2173. xchar          = unreserved | reserved | escape
  2174.  
  2175. digits         = 1*digit
  2176.  
  2177.  
  2178.  
  2179. 6. Security Considerations
  2180.  
  2181.  
  2182.  
  2183.    The URL scheme does not in itself pose a security threat. Users
  2184.  
  2185.    should beware that there is no general guarantee that a URL which at
  2186.  
  2187.    one time points to a given object continues to do so, and does not
  2188.  
  2189.    even at some later time point to a different object due to the
  2190.  
  2191.    movement of objects on servers.
  2192.  
  2193.  
  2194.  
  2195.    A URL-related security threat is that it is sometimes possible to
  2196.  
  2197.    construct a URL such that an attempt to perform a harmless idempotent
  2198.  
  2199.    operation such as the retrieval of the object will in fact cause a
  2200.  
  2201.    possibly damaging remote operation to occur.  The unsafe URL is
  2202.  
  2203.    typically constructed by specifying a port number other than that
  2204.  
  2205.    reserved for the network protocol in question.  The client
  2206.  
  2207.    unwittingly contacts a server which is in fact running a different
  2208.  
  2209.    protocol.  The content of the URL contains instructions which when
  2210.  
  2211.    interpreted according to this other protocol cause an unexpected
  2212.  
  2213.    operation. An example has been the use of gopher URLs to cause a rude
  2214.  
  2215.    message to be sent via a SMTP server.  Caution should be used when
  2216.  
  2217.    using any URL which specifies a port number other than the default
  2218.  
  2219.    for the protocol, especially when it is a number within the reserved
  2220.  
  2221.    space.
  2222.  
  2223.  
  2224.  
  2225.    Care should be taken when URLs contain embedded encoded delimiters
  2226.  
  2227.    for a given protocol (for example, CR and LF characters for telnet
  2228.  
  2229.    protocols) that these are not unencoded before transmission.  This
  2230.  
  2231.    would violate the protocol but could be used to simulate an extra
  2232.  
  2233.    operation or parameter, again causing an unexpected and possible
  2234.  
  2235.    harmful remote operation to be performed.
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243. Berners-Lee, Masinter & McCahill                               [Page 20]
  2244.  
  2245.  
  2246.  
  2247. RFC 1738            Uniform Resource Locators (URL)        December 1994
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.    The use of URLs containing passwords that should be secret is clearly
  2254.  
  2255.    unwise.
  2256.  
  2257.  
  2258.  
  2259. 7. Acknowledgements
  2260.  
  2261.  
  2262.  
  2263.    This paper builds on the basic WWW design (RFC 1630) and much
  2264.  
  2265.    discussion of these issues by many people on the network. The
  2266.  
  2267.    discussion was particularly stimulated by articles by Clifford Lynch,
  2268.  
  2269.    Brewster Kahle [10] and Wengyik Yeong [18]. Contributions from John
  2270.  
  2271.    Curran, Clifford Neuman, Ed Vielmetti and later the IETF URL BOF and
  2272.  
  2273.    URI working group were incorporated.
  2274.  
  2275.  
  2276.  
  2277.    Most recently, careful readings and comments by Dan Connolly, Ned
  2278.  
  2279.    Freed, Roy Fielding, Guido van Rossum, Michael Dolan, Bert Bos, John
  2280.  
  2281.    Kunze, Olle Jarnefors, Peter Svanberg and many others have helped
  2282.  
  2283.    refine this RFC.
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355. Berners-Lee, Masinter & McCahill                               [Page 21]
  2356.  
  2357.  
  2358.  
  2359. RFC 1738            Uniform Resource Locators (URL)        December 1994
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365. APPENDIX: Recommendations for URLs in Context
  2366.  
  2367.  
  2368.  
  2369.    URIs, including URLs, are intended to be transmitted through
  2370.  
  2371.    protocols which provide a context for their interpretation.
  2372.  
  2373.  
  2374.  
  2375.    In some cases, it will be necessary to distinguish URLs from other
  2376.  
  2377.    possible data structures in a syntactic structure. In this case, is
  2378.  
  2379.    recommended that URLs be preceeded with a prefix consisting of the
  2380.  
  2381.    characters "URL:". For example, this prefix may be used to
  2382.  
  2383.    distinguish URLs from other kinds of URIs.
  2384.  
  2385.  
  2386.  
  2387.    In addition, there are many occasions when URLs are included in other
  2388.  
  2389.    kinds of text; examples include electronic mail, USENET news
  2390.  
  2391.    messages, or printed on paper. In such cases, it is convenient to
  2392.  
  2393.    have a separate syntactic wrapper that delimits the URL and separates
  2394.  
  2395.    it from the rest of the text, and in particular from punctuation
  2396.  
  2397.    marks that might be mistaken for part of the URL. For this purpose,
  2398.  
  2399.    is recommended that angle brackets ("<" and ">"), along with the
  2400.  
  2401.    prefix "URL:", be used to delimit the boundaries of the URL.  This
  2402.  
  2403.    wrapper does not form part of the URL and should not be used in
  2404.  
  2405.    contexts in which delimiters are already specified.
  2406.  
  2407.  
  2408.  
  2409.    In the case where a fragment/anchor identifier is associated with a
  2410.  
  2411.    URL (following a "#"), the identifier would be placed within the
  2412.  
  2413.    brackets as well.
  2414.  
  2415.  
  2416.  
  2417.    In some cases, extra whitespace (spaces, linebreaks, tabs, etc.) may
  2418.  
  2419.    need to be added to break long URLs across lines.  The whitespace
  2420.  
  2421.    should be ignored when extracting the URL.
  2422.  
  2423.  
  2424.  
  2425.    No whitespace should be introduced after a hyphen ("-") character.
  2426.  
  2427.    Because some typesetters and printers may (erroneously) introduce a
  2428.  
  2429.    hyphen at the end of line when breaking a line, the interpreter of a
  2430.  
  2431.    URL containing a line break immediately after a hyphen should ignore
  2432.  
  2433.    all unencoded whitespace around the line break, and should be aware
  2434.  
  2435.    that the hyphen may or may not actually be part of the URL.
  2436.  
  2437.  
  2438.  
  2439.    Examples:
  2440.  
  2441.  
  2442.  
  2443.       Yes, Jim, I found it under <URL:ftp://info.cern.ch/pub/www/doc;
  2444.  
  2445.       type=d> but you can probably pick it up from <URL:ftp://ds.in
  2446.  
  2447.       ternic.net/rfc>.  Note the warning in <URL:http://ds.internic.
  2448.  
  2449.       net/instructions/overview.html#WARNING>.
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467. Berners-Lee, Masinter & McCahill                               [Page 22]
  2468.  
  2469.  
  2470.  
  2471. RFC 1738            Uniform Resource Locators (URL)        December 1994
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477. References
  2478.  
  2479.  
  2480.  
  2481.    [1] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D.,
  2482.  
  2483.        Torrey, D., and B. Alberti, "The Internet Gopher Protocol
  2484.  
  2485.        (a distributed document search and retrieval protocol)",
  2486.  
  2487.        RFC 1436, University of Minnesota, March 1993.
  2488.  
  2489.        <URL:ftp://ds.internic.net/rfc/rfc1436.txt;type=a>
  2490.  
  2491.  
  2492.  
  2493.    [2] Anklesaria, F., Lindner, P., McCahill, M., Torrey, D.,
  2494.  
  2495.        Johnson, D., and B. Alberti, "Gopher+: Upward compatible
  2496.  
  2497.        enhancements to the Internet Gopher protocol",
  2498.  
  2499.        University of Minnesota, July 1993.
  2500.  
  2501.        <URL:ftp://boombox.micro.umn.edu/pub/gopher/gopher_protocol
  2502.  
  2503.        /Gopher+/Gopher+.txt>
  2504.  
  2505.  
  2506.  
  2507.    [3] Berners-Lee, T., "Universal Resource Identifiers in WWW: A
  2508.  
  2509.        Unifying Syntax for the Expression of Names and Addresses of
  2510.  
  2511.        Objects on the Network as used in the World-Wide Web", RFC
  2512.  
  2513.        1630, CERN, June 1994.
  2514.  
  2515.        <URL:ftp://ds.internic.net/rfc/rfc1630.txt>
  2516.  
  2517.  
  2518.  
  2519.    [4] Berners-Lee, T., "Hypertext Transfer Protocol (HTTP)",
  2520.  
  2521.        CERN, November 1993.
  2522.  
  2523.        <URL:ftp://info.cern.ch/pub/www/doc/http-spec.txt.Z>
  2524.  
  2525.  
  2526.  
  2527.    [5] Braden, R., Editor, "Requirements for Internet Hosts --
  2528.  
  2529.        Application and Support", STD 3, RFC 1123, IETF, October 1989.
  2530.  
  2531.        <URL:ftp://ds.internic.net/rfc/rfc1123.txt>
  2532.  
  2533.  
  2534.  
  2535.    [6] Crocker, D. "Standard for the Format of ARPA Internet Text
  2536.  
  2537.        Messages", STD 11, RFC 822, UDEL, April 1982.
  2538.  
  2539.        <URL:ftp://ds.internic.net/rfc/rfc822.txt>
  2540.  
  2541.  
  2542.  
  2543.    [7] Davis, F., Kahle, B., Morris, H., Salem, J., Shen, T., Wang, R.,
  2544.  
  2545.        Sui, J., and M. Grinbaum, "WAIS Interface Protocol Prototype
  2546.  
  2547.        Functional Specification", (v1.5), Thinking Machines
  2548.  
  2549.        Corporation, April 1990.
  2550.  
  2551.        <URL:ftp://quake.think.com/pub/wais/doc/protspec.txt>
  2552.  
  2553.  
  2554.  
  2555.    [8] Horton, M. and R. Adams, "Standard For Interchange of USENET
  2556.  
  2557.        Messages", RFC 1036, AT&T Bell Laboratories, Center for Seismic
  2558.  
  2559.        Studies, December 1987.
  2560.  
  2561.        <URL:ftp://ds.internic.net/rfc/rfc1036.txt>
  2562.  
  2563.  
  2564.  
  2565.    [9] Huitema, C., "Naming: Strategies and Techniques", Computer
  2566.  
  2567.        Networks and ISDN Systems 23 (1991) 107-110.
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579. Berners-Lee, Masinter & McCahill                               [Page 23]
  2580.  
  2581.  
  2582.  
  2583. RFC 1738            Uniform Resource Locators (URL)        December 1994
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.   [10] Kahle, B., "Document Identifiers, or International Standard
  2590.  
  2591.        Book Numbers for the Electronic Age", 1991.
  2592.  
  2593.        <URL:ftp://quake.think.com/pub/wais/doc/doc-ids.txt>
  2594.  
  2595.  
  2596.  
  2597.   [11] Kantor, B. and P. Lapsley, "Network News Transfer Protocol:
  2598.  
  2599.        A Proposed Standard for the Stream-Based Transmission of News",
  2600.  
  2601.        RFC 977, UC San Diego & UC Berkeley, February 1986.
  2602.  
  2603.        <URL:ftp://ds.internic.net/rfc/rfc977.txt>
  2604.  
  2605.  
  2606.  
  2607.   [12] Kunze, J., "Functional Requirements for Internet Resource
  2608.  
  2609.        Locators", Work in Progress, December 1994.
  2610.  
  2611.        <URL:ftp://ds.internic.net/internet-drafts
  2612.  
  2613.        /draft-ietf-uri-irl-fun-req-02.txt>
  2614.  
  2615.  
  2616.  
  2617.   [13] Mockapetris, P., "Domain Names - Concepts and Facilities",
  2618.  
  2619.        STD 13, RFC 1034, USC/Information Sciences Institute,
  2620.  
  2621.        November 1987.
  2622.  
  2623.        <URL:ftp://ds.internic.net/rfc/rfc1034.txt>
  2624.  
  2625.  
  2626.  
  2627.   [14] Neuman, B., and S. Augart, "The Prospero Protocol",
  2628.  
  2629.        USC/Information Sciences Institute, June 1993.
  2630.  
  2631.        <URL:ftp://prospero.isi.edu/pub/prospero/doc
  2632.  
  2633.        /prospero-protocol.PS.Z>
  2634.  
  2635.  
  2636.  
  2637.   [15] Postel, J. and J. Reynolds, "File Transfer Protocol (FTP)",
  2638.  
  2639.        STD 9, RFC 959, USC/Information Sciences Institute,
  2640.  
  2641.        October 1985.
  2642.  
  2643.        <URL:ftp://ds.internic.net/rfc/rfc959.txt>
  2644.  
  2645.  
  2646.  
  2647.   [16] Sollins, K. and L. Masinter, "Functional Requirements for
  2648.  
  2649.        Uniform Resource Names", RFC 1737, MIT/LCS, Xerox Corporation,
  2650.  
  2651.        December 1994.
  2652.  
  2653.        <URL:ftp://ds.internic.net/rfc/rfc1737.txt>
  2654.  
  2655.  
  2656.  
  2657.   [17] St. Pierre, M, Fullton, J., Gamiel, K., Goldman, J., Kahle, B.,
  2658.  
  2659.        Kunze, J., Morris, H., and F. Schiettecatte, "WAIS over
  2660.  
  2661.        Z39.50-1988", RFC 1625, WAIS, Inc., CNIDR, Thinking Machines
  2662.  
  2663.        Corp., UC Berkeley, FS Consulting, June 1994.
  2664.  
  2665.        <URL:ftp://ds.internic.net/rfc/rfc1625.txt>
  2666.  
  2667.  
  2668.  
  2669.   [18] Yeong, W. "Towards Networked Information Retrieval", Technical
  2670.  
  2671.        report 91-06-25-01, Performance Systems International, Inc.
  2672.  
  2673.        <URL:ftp://uu.psi.com/wp/nir.txt>, June 1991.
  2674.  
  2675.  
  2676.  
  2677.   [19] Yeong, W., "Representing Public Archives in the Directory",
  2678.  
  2679.        Work in Progress, November 1991.
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691. Berners-Lee, Masinter & McCahill                               [Page 24]
  2692.  
  2693.  
  2694.  
  2695. RFC 1738            Uniform Resource Locators (URL)        December 1994
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.   [20] "Coded Character Set -- 7-bit American Standard Code for
  2702.  
  2703.        Information Interchange", ANSI X3.4-1986.
  2704.  
  2705.  
  2706.  
  2707. Editors' Addresses
  2708.  
  2709.  
  2710.  
  2711. Tim Berners-Lee
  2712.  
  2713. World-Wide Web project
  2714.  
  2715. CERN,
  2716.  
  2717. 1211 Geneva 23,
  2718.  
  2719. Switzerland
  2720.  
  2721.  
  2722.  
  2723. Phone: +41 (22)767 3755
  2724.  
  2725. Fax: +41 (22)767 7155
  2726.  
  2727. EMail: timbl@info.cern.ch
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733. Larry Masinter
  2734.  
  2735. Xerox PARC
  2736.  
  2737. 3333 Coyote Hill Road
  2738.  
  2739. Palo Alto, CA 94034
  2740.  
  2741.  
  2742.  
  2743. Phone: (415) 812-4365
  2744.  
  2745. Fax: (415) 812-4333
  2746.  
  2747. EMail: masinter@parc.xerox.com
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753. Mark McCahill
  2754.  
  2755. Computer and Information Services,
  2756.  
  2757. University of Minnesota
  2758.  
  2759. Room 152 Shepherd Labs
  2760.  
  2761. 100 Union Street SE
  2762.  
  2763. Minneapolis, MN 55455
  2764.  
  2765.  
  2766.  
  2767. Phone: (612) 625 1300
  2768.  
  2769. EMail: mpm@boombox.micro.umn.edu
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803. Berners-Lee, Masinter & McCahill                               [Page 25]
  2804.  
  2805.  
  2806.  
  2807. .
  2808.  
  2809.